// scripts/build.js
// 把packages下所有包都进行打包
const fs = require('fs')
const execa = require('execa') // 开启子进程 进行打包 最终使用rollup打包

// 找到packages下的所有目录
const targets = fs.readdirSync('packages').filter(f => {
    return fs.statSync(`packages/${f}`).isDirectory();

})

// 打包(并行)

// 每个模块每次打包执行的方法
async function build(target) {
    // rollup -c --environment TARGET:shared
    await execa('rollup', ['-c', '--environment', `TARGET:${target}`],
        // 子进程打包信息共享给父进程
        {stdio: 'inherit'})
}

function runParallel(targets, iteratorFn) {
    const res = []
    for (const item of targets) {
        const p = iteratorFn(item)
        res.push(p);
    }
    return Promise.all(res)
}

runParallel(targets, build)